package com.jiang.专题.双指针.Q167;

/**
 * @author Jiang
 * @version 1.0
 * @date 2025/01/19 21:52
 */
class Solution {
    // 二分查找
    // public int[] twoSum(int[] numbers, int target) {
    //     int len = numbers.length;
    //     int i = 0;
    //     while(i < len - 1) {
    //         int index = binarySearch(numbers, i + 1, len, target - numbers[i]);
    //         if (index > 0) {
    //             return new int[]{i + 1, index + 1};
    //         }
    //         i++;
    //     }
    //     return null;
    // }

    // public int binarySearch(int[] numbers, int l, int r, int value) {
    //     while(l < r) {
    //         int mid = (r - l) / 2 + l;
    //         if (numbers[mid] == value) {
    //             return mid;
    //         } else if (numbers[mid] < value) {
    //             l = mid + 1;
    //         } else {
    //             r = mid;
    //         }
    //     }
    //     return -1;
    // }

    // 双指针
    public int[] twoSum(int[] numbers, int target) {
        int l = 0, r = numbers.length - 1;
        while(l < r) {
            while (numbers[l] + numbers[r] < target) {
                l++;
            }
            while (numbers[l] + numbers[r] > target) {
                r--;
            }
            if (numbers[l] + numbers[r] == target) {
                break;
            }
        }
        return new int[]{l + 1, r + 1};
    }
}
